package com.sisgesbyte.services.sistema;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.auditoria.AuditoriaDao;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.data.entity.auditoria.LogAccesoSistemaEntity;
import com.sisgesbyte.services.sistema.bean.AccesoLogResponse;
import com.sisgesbyte.services.sistema.bean.LogAccesoBean;

@Stateless
public class AuditoriaSistemaImpl implements AuditoriaSistema {
	
	@EJB
	private AuditoriaDao auditoriaDao;
	@Inject
	private Validaciones validaciones;

	@Override
	public AccesoLogResponse listaAccesoSistema(String codTransaccion,FiltrosSQLBean filtros) {
		String mensajeTransaccionMetodo = "[listaAccesoSistema idTx=" + codTransaccion + "] - ";
		AccesoLogResponse response = new AccesoLogResponse();
		try{
			 response.setIdTransaccion(codTransaccion);
			 List<LogAccesoSistemaEntity> req = null;
			try{
				req = auditoriaDao.listarLog(filtros);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al lista " +e);
				response.setCodigoRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_COD_IDT66);
				response.setMensajeRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_MSJ_IDT66);
				return response;
			}
			
			if(req.size() > 0){
				List<LogAccesoBean> lista = new ArrayList<LogAccesoBean>();
				for(LogAccesoSistemaEntity row : req){
					LogAccesoBean bean = new LogAccesoBean();
					bean.setActive(row.getActive());
					bean.setCiudad(validaciones.validarCamposString(row.getCiudad()));
					bean.setCodTransaccion(validaciones.validarCamposString(row.getCod_transaccion()));
					bean.setContinente(validaciones.validarCamposString(row.getContinente()));
					bean.setEmpresa(validaciones.validarCamposString(row.getEmpresa()));
					bean.setFechaAcceso(row.getFecha_acceso());
					bean.setId(row.getId());
					bean.setIpEstatica(validaciones.validarCamposString(row.getIp_estatica()));
					bean.setIpPublica(validaciones.validarCamposString(row.getIp_publica()));
					bean.setLatMap(row.getLat_map());
					bean.setLngMap(row.getLng_map());
					bean.setMarcaHost(validaciones.validarCamposString(row.getMarca_host()));
					bean.setNavegador(validaciones.validarCamposString(row.getNavegador()));
					bean.setPais(validaciones.validarCamposString(row.getPais()));
					bean.setRegion(validaciones.validarCamposString(row.getRegion()));
					bean.setTipoHost(validaciones.validarCamposString(row.getTipo_host()));
					bean.setUsuario(validaciones.validarCamposString(row.getUsuario()));
					
					lista.add(bean);
				}
				response.setListaAccesoSistema(lista);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_COD_IDF65);
				response.setMensajeRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_MSJ_IDF65);
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso" +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_COD_IDT66);
			response.setMensajeRespuesta(ConstantesInternasSistema.AUDITORIA_LISTAR_MSJ_IDT66);
			return response;
		}
		
		return response;
	}
	
}
